<?php
/**
 * Created by PhpStorm.
 * User=> Happy
 * Date=> 2016/6/2 0002
 * Time=> 21=>15
 */
//用于快速创建指定form元素
class create_formPlugin extends Plugin
{
  //展示bootstrap的demo  bootstrap2生成的表单
  public  function  show_bootstrap_demo(){
         $data=$this->get_test_data1();
         $tpl=$this->config['plugin_path'].'/tpl/boot.tpl';
         $t=new BlitzPhp();
       echo $t->Binclude($tpl,array('data'=>$this->filter_data($data,1)));
  }
    //bootstrap3 生成的表单
  public  function  show_bootstrap3_demo(){
        $data=$this->get_test_data2();
        $tpl=$this->config['plugin_path'].'/tpl/boot3.tpl';
        $t=new BlitzPhp();
        echo $t->Binclude($tpl,array('data'=>$this->filter_data($data,1)));
    }
    //创建bootstrap3的表单
    public  function  create_bootstrap3_form($data){
        $tpl=$this->config['plugin_path'].'/tpl/boot3.tpl';
        $t=new BlitzPhp();
        echo $t->Binclude($tpl,array('data'=>$this->filter_data($data,1)));
    }

    //展示jquery表单美化插件2
  public  function   show_transform_demo(){
      $data=$this->get_test_data1();
      $tpl=$this->config['plugin_path'].'/tpl/transform.tpl';
      $t=new BlitzPhp();
      echo $t->Binclude($tpl,array('data'=>json_encode($data)));

  }
    //获取测试数据1  复杂的表单创建数据
  private  function  get_test_data1(){
  return array(
      array(
          'element'=>'html',
          'html'=>'<h2>添加新服务</h2>',
      ),
      array(
          'element'=>'html',
          'html'=>'<div class="alert fade in">
        <button type="button" class="close" data-dismiss="alert">×</button>
        <strong>警告：</strong> 卡项服务名称和次数是必填选项
    </div>'
      ),
      array(  //加载完成执行代码
          'element'=>'script',
           'html'=>'$(".alert").alert();'
      ),
      array(
          'element'=>'form',
          'method'=>'post',
          'action'=>'index.php?act=order&op=yuding',
      ),
      array( 'element'=>'input',
                'label'=>'姓名',
                'name'=>'user_name',
               'id'=>'user_name',
                'placeholder'=>'请填写您的姓名'),
      array(  'element'=>'select',
          'value'=>array('1'=>'一间','2'=>'2间','3'=>'三间'),
                'label'=>'预定数量',
                'name'=>'room_count',
                'id'=>'room_count',
                'placeholder'=>'房间数量'),
      array(
          'element'=>'textarea',
          'label'=>'备注',
          'name'=>'info',
          'id'=>'info',
          'rows'=>"6",
          'cols'=>"30",
          'placeholder'=>'备注信息'
      ),
      array(
          'label'=>'电话',
          'name'=>'user_phone',
          'id'=>'user_phone',
          'placeholder'=>'请填写您的电话'),
      array(
          'label'=>'电子邮件',
          'name'=>'user_email',
          'id'=>'user_email',
          'placeholder'=>'请填写您的电子邮件'),
      array(
          'element'=>'radio',
          'label'=>'是否接收订单通知',
          'value'=>array('接收','不接收')
      ),
      array(
          'element'=>'checkbox',
          'label'=>'附带选择',
          'value'=>array('wifi'=>'wifi','water'=>'酒水'),
         'id'=>'user_email'  //将会设置外层div id 用于筛选
      ),
      array(
          'element'=>'radio',
          'label'=>'性别',
          'value'=>array('man'=>'男','woman'=>'女'),
          'name'=>'sex',
          'id'=>'user_email' //将会设置外层div id 用于筛选)
       ),
      array(
          'label'=>'上传照片',
          'type'=>'file',
          'name'=>'user_photo',
          'id'=>'user_photo'
      ),
      array(
          'label'=>'',
          'type'=>'submit',
          'name'=>'submit_order',
          'id'=>'submit_order',
          'value'=>'预定'
      ));

  }
    //获取测试数据样例2  最简单的创建表单数据
  private  function  get_test_data2(){
        return array(
            array(
                'element'=>'form',
                'method'=>'post',
                'action'=>'index.php?act=order&op=yuding',
            ),
            array( 'element'=>'input',
                      'label'=>'姓名'),
            array(  'element'=>'select',
                'value'=>array('一间','2间','三间'),
                'label'=>'预定数量'
            ),
            array(
                'element'=>'textarea',
                'label'=>'备注',
            ),
            array(
                'label'=>'电话',
                ),
            array( 'label'=>'电子邮件',
                  ),
            array(
                'element'=>'radio',
                'label'=>'是否接收订单通知',
                'value'=>array('接收','不接收')
            ),
            array(
                'element'=>'checkbox',
                'label'=>'附带选择',
                'value'=>array('wifi'=>'wifi','water'=>'酒水'),
            ),
            array(
                'element'=>'radio',
                'label'=>'性别',
                'value'=>array('男','女'),
            ),
            array(
                'label'=>'上传照片',
                'type'=>'file'
            ),
            array(
                'label'=>'',
                'type'=>'submit',
                'value'=>'预定'
            ));

    }

    //创建表单
  public  function create($config=array(),$type='bootstrap'){

      $data=$config;
      $tpl=$this->config['plugin_path'].'/tpl/boot.tpl';
      //表单预处理
     foreach($data as $key=>$value){
         if(in_array($value['element'],array('form_html','html','script'))){
              $html=$value['html'];
             $data[$key]['html']=addslashes(str_replace(PHP_EOL,'',$html)); //移除换行和双引号转义
          //  write($value[$key]['html']);
         }
     }
      echo BlitzPhp::template(file_get_contents($tpl),array('data'=>json_encode($data)));
  }
    //处理数据 主要是单引号，双引号的问题 ，输出前过滤数据
  public  function   filter_data($data=array(),$type=0){//0代表数组，1 代表返回json

      foreach($data as $key=>$value){
          if( in_array($value['element'],array('form_html','html','script'))){
              $html=$value['html'];
              $data[$key]['html']=addslashes(str_replace(PHP_EOL,'',$html)); //移除换行和双引号转义
          }
      }
      if($type){
          return json_encode($data);
      }
  }

    //处理数据，用于接收数据处理set_name的问题
  public  function   filter_set_data(&$data=array()){
      foreach($data as $key=>$value){
          $value=trim($value);
          if(substr($key,0,4)=='set_'){
              if($value){
                  $data[substr($key,4)]=$value;
              }
              unset($data[$key]);
          }
          else{
              $data[$key]=$value;
          }
      }
      return $data;
  }

   //处理表单，主要处理表单数组的合并与默认值设置等
  public  function   merge_fill_data(&$form_arr=array(),&$fill_data=array(),$inside_arr=array(),$outside_arr=array()){
      if($inside_arr){
          //添加员工id信息
          array_splice($form_arr,-1,0,$inside_arr);//添加位置为倒数第二个的位置，即提交按钮以前
      }

      foreach ($fill_data as $key => $value) {

          foreach ($form_arr as $k => $val) { //获取值
              if ($val['name'] == $key || $val['id'] == $key) {
                  $form_arr[$k]['value'] = $value;
                  break; //直接进入下次循环
              }
          }
      }
      if($outside_arr){
          $form_arr= array_merge($outside_arr, $form_arr);
      }
      return $form_arr;

  }


}